package com.weipai.springboot.module.mapper;

import com.weipai.springboot.model.Demand;
import com.weipai.springboot.model.api.Response;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

import java.util.List;
import java.util.Map;

/**
 * 需求
 */
public interface DemandMapper extends Mapper<Demand>, MySqlMapper<Demand> {

    //查询数据
    List<Demand> selectAllByDemand(String demandCategoryId);

    //查看需求详情
    Demand getDemandById(String id);

    //根据需求状态查询
    List<Demand> selectDemandByStatus(@Param("demandStatus") Integer demandStatus, @Param("start") Integer start, @Param("size") Integer size);

    int countDemandByStatus(@Param("demandStatus") Integer demandStatus);

    //获取用户的需求
    List<Map<String,Object>> getDemandByCustomerId(String customerId);

    //获取技工完成的需求
    List<Demand> demandListByArtisanId(@Param("artisanId") String artisanId,@Param("status") Integer status);

    //需求列表
    List<Map<String,Object>> demandListByCity(@Param("start")Integer start, @Param("size")Integer size,
                                               @Param("status")Integer status);

    //需求总数量
    Integer demandListAmountByCity( @Param("status") Integer status);

    List<Map<String,Object>> demandListByCustomer(@Param("start")Integer start, @Param("size")Integer size,
                                                  @Param("customerId")String customerId, @Param("status")Integer status);

    List<Map<String,Object>> demandListByArtisanId22(@Param("start")Integer start, @Param("size")Integer size,
                                                   @Param("artisanId")String artisanId, @Param("status")Integer status);

    Integer demandListAmountByCustomer(@Param("customerId") String customerId, @Param("status") Integer status);

    Integer demandListAmountByArtisanId(@Param("artisanId") String artisanId, @Param("status") Integer status);

    //更改需求的状态
    @Update("update c_demand set demand_status=#{status} where demand_id=#{id}")
    int updateStatus(@Param("id") String id, @Param("status") Integer status);

    //按月份和需求订单状态分组查出每个月各个订单的数量
    List<Map<String,Object>> demandStatement(@Param("time") String time, @Param("demandCategoryId") String demandCategoryId);

    //每个分类下的订单数量
    List<Map<String,Object>> getDemandCountList(@Param("time") String time, @Param("demandStatus") int status);

    //技工的订单数
    Integer getDemandAmountByArtisan(@Param("artisanId") String artisanId, @Param("status") Integer status);

    //通过需求订单号查询订单
    Map<String,Object> getDemandInfoByDemandNumber(String demandNumber);

    //通过需求订单号查询需求对象
    Demand getDemandByDemandNumber(String orderNumber);

    //更改需求订单为交易成功
    @Update("update c_demand set pay_type=#{payment}, pay_time= now(), demand_status=#{status} where demand_number=#{demandNumber}")
    int updatePayStatus(@Param("demandNumber") String orderNumber, @Param("payment") Integer payment, @Param("status") int status);

    //根据需求订单状态查询订单
    List<Map<String,Object>> getDemandByDemandStatus(int demandStatus);


    List<Map<String,Object>> getDemandByArtisan(String id);

}